4
תגובות
מופיעה לי השגיאה :
PDO::query(): SQLSTATE[00000]: No error: PDO constructor was not called happened

עכשיו השורה שבה השגיאה היא שורה בתוך מתודה, שבה כתוב parent::query (מחלקת PDO)..כאילו כזה :
parent::query($statement);


מה עושים ?

בתכלס המתודה כזאתי :
public function query($statement) {
            return parent::query($statement);
        }


מה אפשר לעשות ?

שבת שלום :)

4 תשובות

avatar ענה intval ב 01 למרץ 2013 #

בקונסטרטור של המחלקה שלך לא קראת ל
parent::__construct

avatar ענה משהה ב 02 למרץ 2013 #

אז זהו, שכן קראתי... משהו פה מוזר..

avatar ענה intval ב 03 למרץ 2013 #

תצרף את כל הקוד של המחלקה ואת השימוש בה

avatar ענה משהה ב 03 למרץ 2013 #

שיט למה לא התחברתי לפני שבדקתי לבד ><
שיניתי קצת את המחלקה ואת הדברים כדי לחלק את זה לתהליך תהליך, ואז אני יראה מה הבעיה... עכשיו הקונסטקטור לא תקין לא דע מה ישלו :O הנה זה הקוד :

class db extends PDO
    {
         protected static $instance ;
         
         private $_connected = false;
         public function __construct($dsn, $username, $password, $driver_options=array()) {
           
            $this->_connected = true;
            self::$instance =  parent::__construct($dsn, $username, $password, $driver_options);
            return self::$instance;
         
         }

         
         public function query($statement) {
            return parent::query($statement);
         }
         
         public function prepareQ()
         {
            //print($this->_connected);
            return new SQLStatement;
           
         }
    }


עכשיו, ישלי עוד מחלקה שהיא SQLStatatement ויש בה את המתודה הזאת :
public function go()
         {
            if(self::$instance === null ){
                echo "error";
            }
            else {
                return parent::$instance->query($this->queryStatement);
                //return $this->instance->query($this->queryStatement);
            }
           
         }


גם את המתודה הזאת אני שיניתי כדי לבדוק...

בקיצור , שאר המתודות במחלקה SQLSTATEMENT עובדות מצויין.

אני ניגש למחלקה ככה :
$db = new db("mysql:host=localhost;dbname=tester",'root','');

$db->prepareQ()->select()->from('test')->go();


ומופיע לי error, בדיוק כמו בבדיקה של המתודה go.. זה אומר שהתכונה nstance לא הוגדרה:O מה הפאק פה ? ^^